# -*- coding: utf-8 -*-

"""
 *
 * - Ime
 *
 *  - kratki opis
 *
 * Autori: Koki007
 * Verzija: 0.1
 * Datum: 04.01.2011
 *
"""

#temp
import pygame

# omogucuje upotrebu kamere u igri, odnosno relativnih kordinata za objekte koje kamere pretvara u "screen" kordinate, kako bi se dobio osjecaj scrollanja/kretanja po mapi
class cKamera:

    def __init__(self, rezolucija, surface):

        # koordinate u koju kamera gleda
        self.pozicija_x = 0
        self.pozicija_y = 0

        # rezolucija prozora
        self.rezolucija_x = rezolucija[0]
        self.rezolucija_y = rezolucija[1]

        # objekt na koji je kamera fokusirana
        self.fokus = 0

        #surface na koji se crtaju objekti
        self.surface = surface
        print " - Inicijalizirana Kamera"
        pass


    def azuriraj(self):
        if self.fokus:
            self.pozicija_x = self.fokus.provjeri_poziciju_x()
            self.pozicija_y = self.fokus.provjeri_poziciju_y()
        pass


    def fokusiraj_na_objekt(self, objekt):
        self.fokus = objekt
        pass



    def fokusiraj_na_tocku(self, x,y):
        self.fokus = False
        self.pozicija_x = y
        self.pozicija_y = x
        pass

    def fokusiraj_na_centar(self):
        self.fokus = False
        self.pozicija_x = self.rezolucija_x / 2
        self.pozicija_y = self.rezolucija_y / 2


    # crta sve objekte u zadanoj mapi i zadanom sloju mape
    def crtaj_mapu(self, mapa,  sloj,  surface):
        for objekt in mapa.lista_objekta_sloj(sloj):
            x,  y = self.izracunaj_koordinate(objekt)
            objekt_slika = objekt.crtaj()
            if objekt_slika:
                surface.blit(objekt_slika,  (x - objekt_slika.get_width() / 2,  y - objekt_slika.get_height() / 2 ))

            # temp - crtanje rect pravokutnika malo iznad pravih slika
            rect = objekt.provjeri_collison_rect()
            rect.centery = y - 70 
            rect.centerx = x 
            pygame.draw.rect(surface,  (0, 255, 0), rect,  1)
        pass


    # izracunaj koordinate na koje se objekt mora crtati na monitoru s obzirom na odnos polozaja izmedu kamere i objekta
    def izracunaj_koordinate(self, objekt):
        x = objekt.provjeri_poziciju_x() - self.pozicija_x + self.rezolucija_x / 2
        y = objekt.provjeri_poziciju_y() - self.pozicija_y + self.rezolucija_y / 2
        return x, y

